#include <iostream>
#include <vector>
using namespace std;

// 已知
int n;

// 未知
vector<int> a;
vector<int> b; // 前缀和数组用于计算收到的石头数

int main()
{
    ios::sync_with_stdio(false);
    cin >> n;
    a.resize(n + 10);
    b.resize(n + 10);
    for (int i = 1; i <= n; i++)
    {
        cin >> a[i];
        b[i] += b[i - 1];                    // 预先处理前缀和
        a[i] += b[i];                        // 加上a[i]可能获取到的
        int l = i + 1, r = min(i + a[i], n); // 确定i的影响区间
        ++b[l], --b[r + 1];                  // 更新区间和
        a[i] -= r - l + 1;                   // 减去a[i]拿走的
    }
    for (int i = 1; i <= n; i++)
    {
        cout << a[i] << " ";
    }
    return 0;
}